
//
// 101123 - AH - Created.
// 110308 - AH - getName() and EMPTY_ARRAY.
// 110225 - AH - getSpareWheelNetwork().
// 110423 - AH - getPit().
// 110530 - AH - getTitle().
// 110716 - AH - (Bien *) getMotorConfiguration().
// 120128 - AH - (Garage) getProductTable().
//

package org.soekrat.engine.io;

import org.soekrat.engine.forest.Forest;
import org.soekrat.engine.mine.Mine;
import org.soekrat.engine.motor.passingstrategies.SequenceWheelProcessing;
import org.soekrat.engine.network.Network;
import org.soekrat.engine.ontology.OntologyDatastructure;
import org.soekrat.engine.ontology.ptable.ProductTable;
import org.soekrat.engine.pit.Pit;
import org.soekrat.engine.swnetwork.SpareWheelNetwork;
import org.soekrat.environment.conversationbase.SoekratData;

/**
 * <p>
 *   Interface for objects that has Soekrat data.
 * </p>
 * @author Arne Halvorsen (AH)
 * @author Laetitia Le Chatton (LLC) 
 */
public interface Soekrat2Data extends SoekratData
{
  /**
   * <p>
   *   Gets title to display for data set.
   * </p>
   * @return Title.
   */
  String getTitle();
  
  /**
   * <p>
   *   Gets 
   *   {@link MotorConfiguration}.
   * </p>
   * @return {@code MotorConfiguration} or {@code null} if does not have.
   */
  //MotorConfiguration getMotorConfiguration();
  SequenceWheelProcessing getSequenceWheelProcessing();
  
  /**
   * <p>
   *   Gets
   *   {@link OntologyDatastructure}.
   * </p>
   * @param name Qualified class name to class of
   *             {@link OntologyDatastructure} to get.
   * @return Object ot {@code null} if not found.
   */
  OntologyDatastructure getOntologyDatastructure(String name);
  
  /**
   * <p>
   *   Gets
   *   {@link Mine}.
   * </p>
   * @return {@code Mine} or {@code null} if does not have.
   */
  @Deprecated
  Mine getMine();
  
  /**
   * <p>
   *   Gets
   *   {@link Network}.
   * </p>
   * @return {@code Network} or {@code null} if does not have.
   */
  @Deprecated
  Network getNetwork();
  
  /**
   * <p>
   *   Gets
   *   {@link Forest}.
   * </p>
   * @return {@code Forest} or {@code null} if does not have.
   */
  @Deprecated
  Forest getForest();
  
  /**
   * <p>
   *   Gets
   *   {@link ProductTable}.
   * </p>
   * @return {@code ProductTable} or {@code null} if does not have.
   */
  @Deprecated
  ProductTable getProductTable();
  
  /**
   * <p>
   *   Gets 
   *   {@link SpareWheelNetwork}.
   * </p>
   * @return {@code SpareWheelNetwork} or {@code null} if it does not have.
   */
  SpareWheelNetwork getSpareWheelNetwork();
  
  /**
   * <p>
   *   Gets 
   *   {@link Pit}.
   * </p>
   * @return {@code Pit} or {@code null} if it does not have.
   */
  Pit getPit();
  
  /**
   * <p>
   *   The empty array shared.
   * </p>
   */
  public static final Soekrat2Data[] EMPTY_ARRAY=new Soekrat2Data[0];
  
}
